/*
 * @Descripttion:
 * @Author: voanit
 * @Date: 2022-03-28 08:23:16
 * @LastEditors: voanit
 * @LastEditTime: 2022-04-03 16:19:06
 */
import router from "./router";
import store from "./store";
import { Message } from "element-ui";
import NProgress from "nprogress"; // progress bar
import "nprogress/nprogress.css"; // progress bar style
import { getToken } from "@/utils/auth"; // get token from cookie
import getPageTitle from "@/utils/get-page-title";

//配置进度条的配置项
NProgress.configure({ showSpinner: false }); // NProgress Configuration

/* 目的：没有token也能访问 */
const whiteList = ["/login", "/qq"]; // no redirect whitelist

/* 路由导航守卫=====只要有路由值发生改变就会触发
beforeEach====跳转之前
afterEach=====跳转之后
*/
router.beforeEach(async (to, from, next) => {
  // console.log("1===beforeEach", to);
  // start progress bar  开启进度条
  NProgress.start();
  // set page title
  // 设置标题
  document.title = getPageTitle(to.meta.title);
  // determine whether the user has logged in
  /* 获取token===从cookie中获取的token */
  const hasToken = getToken();
  // console.log(hasToken, 7);
  // next();
  /* 
1-判断是否有token
  2-如果有token=》表示已经登录
    3-判断是否去login页面
      如果有token去的是login=》去首页
      如果有token去的不是login=》放行

*/
  if (hasToken) {
    // 表示已经登录
    // next();
    if (to.path === "/login") {
      //判断去的页面是不是login,是：去首页
      // 表示：既有toke去的又是login===》去首页
      next("/");
      NProgress.done();
    } else {
      // 表示：有token，去的不是登录页===》直接放行
      /* 
      跳转之前获取用户信息
      */
      const hasGetUserInfo = store.getters.name; // 获取的用户信息
      // console.log(hasGetUserInfo, 666);
      if (hasGetUserInfo) {
        // 表示之前获取过用户信息==不需要在获取了
        next();
      } else {
        // 表示之前没有获取用户信息==第一次登录进来==需要获取用户信息
        // 获取用户信息
        store.dispatch("user/getInfo");
        next();
      }
    }
  } else {
    /* 
    有些页面没有token也是可以进入的，就可以通过白名单设置 login
    
    */
    //next("/login");
    // const whiteList = ["/login"]; // no redirect whitelist
    // 表示没有登录
    // if (whiteList.indexOf(to.path) !== -1) {
    if (whiteList.includes(to.path)) {
      // in the free login whitelist, go directly
      next();
    } else {
      // other pages that do not have permission to access are redirected to the login page.
      // next(`/login?redirect=${to.path}`);
      next(`/login`);
      NProgress.done();
    }
  }
});

router.afterEach(() => {
  // console.log("2===afterEach");
  // finish progress bar  结束进度条
  NProgress.done();
});
